package com.chunlin.testinterface.comparable;

public class Student implements Comparable{
    private String name;
    private int score;
    public Student(String name, int score) {
        this.name = name;
        this.score = score;
    }

    @Override
    public String toString() {
        return "[" + this.name + ":" + this.score + "]";
    }

    //在 sort 方法中会自动调用 compareTo 方法. compareTo 的参数是 Object , 其实传入的就是 Student 类型的对象
    //然后比较当前对象和参数对象的大小关系(按分数来算)
    //如果当前对象应排在参数对象之前, 返回小于 0 的数字;
    //如果当前对象应排在参数对象之后, 返回大于 0 的数字;
    //如果当前对象和参数对象不分先后, 返回 0;
    //再次执行程序, 结果就符合预期了

    //注意事项: 对于 sort 方法来说, 需要传入的数组的每个对象都是 "可比较" 的, 需要具备 compareTo 这样的能力
    // 通过重写 compareTo 方法的方式, 就可以定义比较规则
    @Override
    public int compareTo(Object o) {
        Student student = (Student) o;
        if (this.score > student.score) {
            return -1;
        } else if (this.score < student.score) {
            return 1;
        } else {
            return 0;
        }
    }
}
